package com.mfhcd.facepay.utils;

import android.text.TextUtils;

import java.math.BigDecimal;
import java.text.DecimalFormat;

/**
 * @author Eiozzgh
 * @author xiaoxiaozrsh@gmail.com
 */
public class DecimalUtils {
    private static final DecimalFormat FORMAT_YUAN = new DecimalFormat("0.00");
    private static final DecimalFormat FORMAT_FEN = new DecimalFormat("0");

    public static String formatYuan(String text) {
        if (TextUtils.isEmpty(text))
            return "";
        return FORMAT_YUAN.format(Double.valueOf(text));
    }

    public static String formatBalance(String amount) {
        // return new DecimalFormat("###,###,###,##0.00").format(Double.valueOf(Utils.fenToYuan(amount)));
        return new DecimalFormat("###,###,###,##0.00").format(Double.valueOf(DecimalUtils.formatYuan(amount)));
    }

    public static String formatYuan(double d) {
        return FORMAT_YUAN.format(d);
    }

    public static String formatFen(String text) {
        if (TextUtils.isEmpty(text))
            return "";
        return FORMAT_FEN.format(Double.valueOf(text));
    }

    public static String formatFen(double d) {
        return FORMAT_FEN.format(d);
    }

    public static double compare(String s1, String s2) {
        BigDecimal b1 = new BigDecimal(formatYuan(s1));
        BigDecimal b2 = new BigDecimal(formatYuan(s2));
        return b1.subtract(b2).doubleValue();
    }

    public static String add(String s1, String s2) {
        BigDecimal b1 = new BigDecimal(formatYuan(s1));
        BigDecimal b2 = new BigDecimal(formatYuan(s2));
        return formatYuan(b1.add(b2).doubleValue());
    }

    public static String sub(String s1, String s2) {
        BigDecimal b1 = new BigDecimal(formatYuan(s1));
        BigDecimal b2 = new BigDecimal(formatYuan(s2));
        return formatYuan(b1.subtract(b2).doubleValue());
    }

    public static String mul(String s1, String s2) {
        BigDecimal b1 = new BigDecimal(formatYuan(s1));
        BigDecimal b2 = new BigDecimal(formatYuan(s2));
        return formatYuan(b1.multiply(b2).doubleValue());
    }

    public static String div(String s1, String s2) {
        BigDecimal b1 = new BigDecimal(formatYuan(s1));
        BigDecimal b2 = new BigDecimal(formatYuan(s2));
        return formatYuan(b1.divide(b2).doubleValue());
    }

    //用于经营分析-趋势的Y轴坐标格式化
    public static float div(float v1, int v2) {
        BigDecimal b1 = new BigDecimal(v1);
        BigDecimal b2 = new BigDecimal(v2);
        return Float.valueOf(new DecimalFormat("###,###,###,##0.0").format(b1.divide(b2).doubleValue()));
    }

    //手续费=金额*费率/100
    public static String calcFee(String amount, String rate) {
        BigDecimal b1 = new BigDecimal(formatYuan(rate));
        BigDecimal b2 = new BigDecimal(formatYuan("100"));
        BigDecimal b3 = new BigDecimal(formatYuan(amount));
        return formatYuan(b3.multiply(new BigDecimal(b1.divide(b2).doubleValue())).doubleValue());
    }
}
